<?php 
    class WebApplicationEndBehavior extends CBehavior
    {
        // Web application end's name.
        private $_endName;
     
        // Getter.
        // Allows to get the current -end's name
        // this way: Yii::app()->endName;
        public function getEndName()
        {
            return $this->_endName;
        }
     
        // Run application's end.
        public function runEnd($name)
        {
            $this->_endName = $name;
     
            // Attach the changeModulePaths event handler
            // and raise it.
            $this->onModuleCreate = array($this, 'changeModulePaths');
            $this->onModuleCreate(new CEvent($this->owner));
     
            $this->owner->run(); // Run application.
        }
     
        // This event should be raised when CWebApplication
        // or CWebModule instances are being initialized.
        public function onModuleCreate($event)
        {
            $this->raiseEvent('onModuleCreate', $event);
        }
     
        // onModuleCreate event handler.
        // A sender must have controllerPath and viewPath properties.
        protected function changeModulePaths($event)
        {
            $event->sender->controllerPath .= DIRECTORY_SEPARATOR.$this->_endName;
            $event->sender->viewPath .= DIRECTORY_SEPARATOR.$this->_endName;
        }
    }
?>